package com.example.demo0630.bean;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;

import javax.validation.constraints.Email;
import javax.validation.constraints.NotEmpty;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @author lzh
 * @date 2020/6/30 - 10:25
 */
/*
@ConfigurationProperties作用：
将配置文件中配置的每一个属性的值，映射到这个组件中；
告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定
参数 prefix = “person” : 将配置文件中的person下面的所有属性一一对应

只有这个组件是容器中的组件，才能使用容器提供的@ConfigurationProperties功能
*/
@Component
@ConfigurationProperties(prefix = "student")
@Data
//SpringBoot读取 多个 yml 配置
//spring-boot中可以用@validated来校验数据，如果数据异常则会统一抛出异常，方便异常中心统一处理
@Validated  //数据校验
public class TestYmlCfg {

    //jsr303 注解
    //pom需要添加依赖 spring-boot-starter-validation
    @NotEmpty
    private String name;

    @Email
    private String email;
    private Integer age;
    private Boolean happy;
    private Date birth;
    private Map<String, Object> maps;
    private List<Object> pets;

}
